package com.awccis.driver.dao;

import com.awccis.admin.model.pay.PaySimpleInfoBean;
import com.awccis.driver.model.*;
import com.awccis.driver.model.car.CarInfo;
import com.awccis.driver.model.credit.CreditBean;
import com.awccis.driver.model.location.LocationBean;
import org.springframework.stereotype.Repository;

import java.util.HashMap;
import java.util.List;

/**
 * @Author: 纯牛奶丶
 * @Date: 2018-03-30 0030 上午 09:48
 * @Since: REDMI.txt.0
 * @Decription:
 **/
@Repository
public interface DriverDao {
    
    /**
     * 查找用户存在
     *
     * @param nickName nickName
     * @return 查询结果
     */
    Integer selectDriverExists(Integer nickName);
    
    /**
     * 查询登录信息
     *
     * @param driverLoginInfo 登录信息
     * @return 数据库查询值0或1
     */
    DriverInfo checkDriverInfo(DriverLoginInfo driverLoginInfo);

    /**
     * 根据司机id获取手机号
     * @param nickName nickName
     * @return driverPhone
     */
    String getDriverPhoneByID(int nickName);

    /**
     * 添加driver注册信息
     *
     * @param driverInfo driver信息
     * @return 数据库添加结果0或1
     */
    int insertDriverInfo(DriverInfo driverInfo);
    
    /**
     * 查询登陆
     *
     * @param nickName nickName
     * @return 查询结果
     */
    Integer selectDriverIsOnline(Integer nickName);
    
    /**
     * 添加关于汽车信息
     *
     * @param carInfo car信息
     * @return 影响的行数
     */
    Integer insertCarInfo(CarInfo carInfo);
    
    /**
     * 查询当前的上一个司机的nickName
     *
     * @return nickname
     */
    Integer selectLastDriverNickName();
    
    /**
     * 修改当前的Status冻结状态
     *
     * @param statusBean statusId driverNickName
     * @return 返回影响行数
     */
    Integer updateStatus(StatusBean statusBean);
    
    /**
     * 修改当前的isChecked审核状态
     *
     * @param statusBean statusId driverNickName
     * @return 返回影响行数
     */
    Integer updateIsChecked(StatusBean statusBean);
    
    /**
     * 修改当前的isOnline在线状态
     *
     * @param statusBean statusId driverNickName
     * @return 返回影响行数
     */
    Integer updateIsOnlineStatus(StatusBean statusBean);
    
    /**
     * 修改当前的isWork是否接单状态
     *
     * @param statusBean statusId driverNickName
     * @return 返回影响行数
     */
    Integer updateIsWorkStatus(StatusBean statusBean);
    
    /**
     * 修改司机的信用积分总分
     *
     * @param statusBean driverNickName
     * @return 返回影响行数
     */
    Integer updateIntegralCount(StatusBean statusBean);

    /**
     * 添加司机的积分详情
     * @param creditBean creditBean
     * @return 返回影响行数
     */
    Integer insertDriverCredit(CreditBean creditBean);
    
    /**
     * 查询星级
     *
     * @param driverId driverNickName
     * @return 星级
     */
    Integer selectStarLevel(Integer driverId);
    
    /**
     * 查询司机的个人信息
     *
     * @param driverLoginInfo 传入的值为司机的driverNickName
     * @return 返回司机的个人信息driverInfo
     */
    DriverInfo selectDriverInfo(DriverLoginInfo driverLoginInfo);
    
    /**
     * 添加司机的位置信息
     * @param personId 司机的driverId
     * @return 影响的行数
     */
    Integer insertDriverLocation(Integer personId);
    
    /**
     * 更改司机位置
     * @param locationBean locationBean 位置信息
     * @return 影响的行数
     */
    Integer updateDriverLocation(LocationBean locationBean);

    /**
     * 查询司机的简单信息
     * @param hashMap driverId
     * @return 结果
     */
    HashMap selectSimpleDriverInfo(HashMap hashMap);

    /**
     * 更改司机的详细信息
     * @param driverUpdateInfo driverUpdateInfo
     * @return 影响的行数
     */
    Integer updateDriverDetailInfo(DriverUpdateInfo driverUpdateInfo);

    /**
     * 根据司机编号查询未完成订单
     * @param driverId driverId
     * @return 影响的行数
     */
    List<NoFinishOrder> getOrderStutusE4(int driverId);

    /**
     * 查询司机本周需要缴纳的费用
     * @param paySimpleInfoBean pa
     * @return paySimpleInfoBean
     */
    PaySimpleInfoBean selectNeedPayInfo(PaySimpleInfoBean paySimpleInfoBean);

    /**
     * 司机更改已经交费记录
     * @param paySimpleInfoBean paySimpleInfoBean
     * @return 影响行数
     */
    Integer updateNeedPay(PaySimpleInfoBean paySimpleInfoBean);

    /**
     * 查询缴费记录
     * @param driverId driverId
     * @return List<PayRecord>
     */
    List<PayRecord> getPayRecord(int driverId);
}
